# -*- coding: utf-8 -*-
import json
import requests
from config.etc import WX_APPID, WX_SECRET

"""
Step 1:
user visit
https://open.weixin.qq.com/connect/qrconnect?appid=wxdb0487324499420e&redirect_uri=http%3A%2F%2Ftest.shitouren.com%2Fweixin%2Fweb%2Fcallback&response_type=code&scope=snsapi_login&state=tesfsdfsd#wechat_redirect
"""

"""
Step 2:
get user access_token
"""
def wx_get_access_token(user_code):
    """
    参数	是否必须	说明
    appid	是	应用唯一标识，在微信开放平台提交应用审核通过后获得
    secret	是	应用密钥AppSecret，在微信开放平台提交应用审核通过后获得
    code	是	填写第一步获取的code参数
    grant_type	是	填authorization_code
    :param user_code:
    :return:{
            "access_token":"ACCESS_TOKEN",
            "expires_in":7200,
            "refresh_token":"REFRESH_TOKEN",
            "openid":"OPENID",
            "scope":"SCOPE"
            }
            参数	说明
            access_token	接口调用凭证
            expires_in	access_token接口调用凭证超时时间，单位（秒）
            refresh_token	用户刷新access_token
            openid	授权用户唯一标识
            scope	用户授权的作用域，使用逗号（,）分隔
            unionid 微信同一账户不同应用通用的id
    """
    url = 'https://api.weixin.qq.com/sns/oauth2/access_token' \
          + '?appid=' + WX_APPID \
          + '&secret=' + WX_SECRET \
          + '&code=' + user_code \
          + '&grant_type=authorization_code'
    res = requests.get(url)

    if res.status_code != 200:
        return None

    res_content = json.loads(res.content)

    if 'errcode' in res_content:
        return None

    return res_content

"""
Step 3:
get user info
"""
def wx_get_user_info(access_token, openid):
    """

    参数:	是否必须	说明
    :param access_token: 是	调用凭证
    :param openid: 是	普通用户的标识，对当前开发者帐号唯一
    :return:{
            "openid":"OPENID",
            "nickname":"NICKNAME",
            "sex":1,
            "province":"PROVINCE",
            "city":"CITY",
            "country":"COUNTRY",
            "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
            "privilege":[
            "PRIVILEGE1",
            "PRIVILEGE2"
            ],
            "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
            }
            openid	普通用户的标识，对当前开发者帐号唯一
            nickname	普通用户昵称
            sex	普通用户性别，1为男性，2为女性
            province	普通用户个人资料填写的省份
            city	普通用户个人资料填写的城市
            country	国家，如中国为CN
            headimgurl	用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空
            privilege	用户特权信息，json数组，如微信沃卡用户为（chinaunicom）
            unionid	用户统一标识。针对一个微信开放平台帐号下的应用，同一用户的unionid是唯一的。
    """
    url = 'https://api.weixin.qq.com/sns/userinfo' \
          + '?access_token=' + access_token \
          + '&openid=' + openid

    res = requests.get(url)

    if res.status_code != 200:
        return None

    res_content = json.loads(res.content)

    if 'errcode' in res.content:
        return

    return res_content


if __name__ == '__main__':
    '''
    {
    u'openid': u'oRwO0wJ8FcOwDrE5b2jby9_mMrPo',
     u'access_token': u'OezXcEiiBSKSxW0eoylIeMS-MMJAMnYyncUCGMzxKtKdyI7eUZrSfB0KrZp7jmRtL-cmEHQopwW_2TTBa2Z6vUcYoS4VI94DjdT0rYvbNzHfkPcOYBTYd0WYsg-pUy6cGIv5jVwIWuEbfTobRF1NQg',
      u'unionid': u'opQe-w8CP0PercjnVEgiIFpIPhQU',
      u'expires_in': 7200,
      u'scope': u'snsapi_userinfo',
      u'refresh_token': u'OezXcEiiBSKSxW0eoylIeMS-MMJAMnYyncUCGMzxKtKdyI7eUZrSfB0KrZp7jmRtAQeJT_DkUXJ_H1Ro2XjRmBzcFHcU_1vwvBfI1JdyMzvOAD0EJOEhz7OX_vbAMlIPMqu2stVptV-b1EgQ8ClJSA'}
    '''
    # print wx_get_access_token('031612cfaab0c02e99a5c6f7d65e132D')
    print wx_get_user_info('OezXcEiiBSKSxW0eoylIeMS-MMJAMnYyncUCGMzxKtKdyI7eUZrSfB0KrZp7jmRtL-cmEHQopwW_2TTBa2Z6vUcYoS4VI94DjdT0rYvbNzHfkPcOYBTYd0WYsg-pUy6cGIv5jVwIWuEbfTobRF1NQg', 'opQe-w8CP0PercjnVEgiIFpIPhQU')
